package cn.tk.utils;

import java.util.regex.Pattern;

/**
 * Created by Trace on 2017/12/09.<br/>
 * Desc: 常用正则表达式封装
 */
@SuppressWarnings("unused")
public final class RegexUtil {
    /**
     * 是否浮点数
     */
    public static final String FLOAT = "^[-+]?(0|([1-9]\\d*))\\.\\d+[f|F]?$";

    /**
     * 是否double型小数
     */
    public static final String DOUBLE = "^[-+]?(0|([1-9]\\d*))\\.\\d+[d|D]?$";

    /**
     * 密码规则：6至20位，支持字母、数字、下划线
     */
    public static final  String PASSWORD = "^\\w{6,20}$";

    /**
     * 是否身份证号码
     */
    public static final String ID_CARD = "^\\d{15}|\\d{17}(\\d|X)$";

    /**
     * 是否电子邮箱
     */
    public static final String EMAIL = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";

    /**
     * 是否大陆固定电话号码
     */
    public static final String CHINA_TELE = "\\d{3}-\\d{8}|\\d{4}-\\d{7}";

    /**
     * 是否是大陆手机号码
     */
    public static final String CHINA_PHONE = "^(13\\d|14[5|7]|15[0-3|5-9]|17\\d|18[0-3|5-9]|199)\\d{8}$";

    /**
     * 是否URL地址
     */
    public static final String URL = "^(?:https?://)?[\\w]{1,}(?:\\.?[\\w]{1,})+[\\w-_/?&=#%:]*$";

    /**
     * 出生日期，格式yyyyMMdd
     */
    public static final String BIRTH = "^(19|20)\\d{2}(1[0-2]|0?[1-9])(0?[1-9]|[1-2][0-9]|3[0-1])$";

    /**
     * 是否是数字
     */
    public static final String NUMBER = "^-?[1-9]\\d*$";

    /**
     * 私有构造
     */
    private RegexUtil() {}

    /**
     * 字符串是否匹配指定正则<br/>
     * @param regex 正则
     * @param input 输入
     * @return 匹配结果
     */
    public static boolean isMatch(String regex, String input) {
        return Pattern.matches(regex, input);
    }

}
